This invention relates to encryption, and more particularly, to public key encryption schemes.
Cryptographic systems are used to provide secure communications services such as secure email services and secure web browsing.
With symmetric key cryptographic systems, the sender of a message uses the same key to encrypt the message that the receiver of the message uses to decrypt the message. Symmetric-key systems require that each sender and receiver exchange a shared key in a secure manner.
With public-key cryptographic systems, two types of keys are used—public keys and private keys. Senders may encrypt messages using the public keys of the receivers. Each receiver has a private key that is used to decrypt the messages for that receiver.
One public cryptographic system that is in use is the RSA cryptographic system. Each user in this system has a unique public key and a unique private key. The private key and public key of each user are generated locally at the user. The private key is retained for subsequent use by the user in decrypting received messages. The public key is published for use by senders in encrypting messages.
A sender using the system may obtain the public key of a given receiver from a key server connected to the Internet. To ensure the authenticity of the public key and thereby defeat possible man-in-the-middle attacks, the public key may be provided to the sender with a certificate signed by a trusted certificate authority. The certificate may be used to verify that the public key belongs to the intended recipient of the sender's message.
To allow an organization to revoke the secure email privileges of an employee when the employee no longer works for the organization, some organizations may arrange to have the public keys of all of their employees automatically expire at the end of each day. New public keys for the current employees may be generated each day. The new public keys may be made publicly available by placing them on a public key server.
Because encryption using public-key encryption algorithms is computationally intensive, some systems allow users to use public-key encryption to securely exchange a shared symmetric key. The symmetric key may then be used to support a secure communication session.
With typical public key encryption systems, a sender must obtain the unique public key of each message recipient before the sender can encrypt a message for that recipient. Because each receiver has a unique public key, a system with N users requires N public keys. In an environment in which there are millions of users, public key servers must host information on these millions of public keys. When a sender desires to send a message, the sender will often not have the public key needed to encrypt the message for a particular given receiver, so the sender must go on-line to access the key server and thereby locate the correct public key information from among the many other entries in the public key directory. Pushing the public key information out to users on a periodic basis to avoid reliance on this on-line look-up process may be cumbersome or impractical due to the large numbers of public keys involved.